﻿using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Media;

namespace WindowsGame1
{
    class Asteroide //: GerenciadorAsteroide
    {
        /// <summary>
        /// Textura estática porquê todos os asteróides compartilham a mesma imagem
        /// </summary>
        static Texture2D textura;


        /// <summary>
        /// A posição por outro lado é uma para cada asteróide
        /// </summary>
        Vector2 posicao;

        public Vector2 Posicao
        {
            get
            {
                return posicao;
            }
        }

        Rectangle recCorte;

        /// <summary>
        /// Velocidade de descida dos asteróides
        /// </summary>
        Vector2 velocidade;// = new Vector2(0, 1);

        /// <summary>
        /// gerador de números aleatórios para sortear a posição dos asteróides
        /// </summary>
        Random rnd = new Random();//?aqui ou no gerenciador? 

        /// <summary>
        /// variável utilizada para saber se o asteróide deve estar visivel na tela ou removido da lista
        /// </summary>
        public bool visivel;

        /// <summary>
        /// variável utilizada pelo asteroide para saber se este deve desaparecer nos cantos da tela
        /// </summary>
        static GameWindow gw;
                
        float rotacao;

        int contador = 0;

        public Rectangle recColisao;

        public Asteroide(Texture2D textura, GameWindow gw)
        {
            Asteroide.textura = textura;
            posicao.X = rnd.Next(10, 750);
            velocidade.X = rnd.Next(-1, 1);
            velocidade.Y = rnd.Next(2, 6);
            visivel = true;
            Asteroide.gw = gw;
            recColisao = new Rectangle((int)posicao.X, (int)posicao.Y, 70, 70);
            recCorte = new Rectangle(0, 0, 70, 70);
        }

        public void Update(GameTime gameTime)
        {
            this.posicao.Y += (int)velocidade.Y;
            this.posicao.X += (int)velocidade.X;
            recColisao = new Rectangle((int)posicao.X, (int)posicao.Y, 70, 70);
        }

        
        public void Draw(SpriteBatch spriteBatch)
        {
             rotacao += 0.01f;

             contador++;

            if(contador > 21)
            {
                this.recCorte.X += 70;                

                if (this.recCorte.X == 210)
                    this.recCorte.X = 0;

                contador = 0;
            }

            if (visivel ==true)
                //spriteBatch.Draw(Asteroide.textura, new Rectangle(
                //     this.recColisao.X,
                //     this.recColisao.Y,
                //     this.recColisao.Width,
                //     this.recColisao.Height),
                //     new Rectangle(
                //         this.recCorte.X,
                //         this.recCorte.Y,
                //         this.recCorte.Width,
                //         this.recCorte.Height),
                //         Color.White,
                //         rotacao,
                //         new Vector2(
                //             this.recCorte.Width,
                //             this.recCorte.Height),
                //             SpriteEffects.None,
                //             1.0f);
                spriteBatch.Draw(Asteroide.textura, this.posicao,this.recCorte ,Color.White);
             

            
        }

    }
}
